<script>
// function Super(name) {
//   this.name = name
// }
// Super.prototype.hello = function() {
//   console.log(`你好, 我是${this.name}`)
// }
// function Sub(name) {
//   Super.call(this, name)
// }
// Sub.prototype = Object.create(Super.prototype)
// Sub.prototype.constructor = Sub

// const child = new Sub('M')
// child.hello()


// class Super {
//   constructor(name) { this.name = name}
//   hello() {
//     console.log(`你好, 我是${this.name}`)
//   }
// }
// class Sub extends Super {
//   constructor(name) { super(name)}
// }
// new Sub('M').hello()

// class Animal {
//   constructor(name) {
//     this.name = name
//     this.speed = 0
//   }
//   run(speed) {
//     this.speed = speed
//     console.log(`${this.name}以${this.speed}米/秒的速度奔跑`)
//   }
//   stop() {
//     this.speed = 0
//     console.log(`${this.name}停止了`)
//   }
// }
// class Rabbit extends Animal {
//   stop() {
//     // console.log(super) // 报错
//     super.stop()
//     console.log(`${this.name}很害怕，停了下来。`)
//   }
//   hide() {
//     this.stop()
//     console.log(`${this.name}藏起来了`)
//   }
// }
// const a = new Animal('未知生物')
// a.run(100)
// a.stop()
// const r = new Rabbit('🐰')
// r.run(10)
// r.stop()
// r.hide()
// console.log(a instanceof Animal) // true
// console.log(r instanceof Rabbit) // true
// console.log(r instanceof Animal) // true
// console.log(a instanceof Rabbit) // false


// function MyArray() {
//   Array.apply(this, arguments)
// }
// MyArray.prototype = Object.create(Array.prototype)
// MyArray.prototype.constructor=MyArray

class MyArray extends Array{}

const arr = new MyArray()
arr.push(1)
console.log(arr)
</script>